/* 
* @Author: Devin
* @Date:   2017-12-31 14:39:57
* @Last Modified by:   anchen
* @Last Modified time: 2018-01-07 13:31:15
*/
;(function(){
    $(".dn-ckx-plugin").each(function() {
        var $this = $(this);
        var obj = {
            ckx      : $this.find(":checkbox , .ui-ckx").not(":disabled") ,
            li       : $this.find(".dn-level-li") ,
            ckxIcon  : $("span.ui-ckx")         
        };        
        var tree = $(this).not(".horizontal,.vertical");
        if(tree){
            var li = tree.find(".dn-level-li");
            li.each(function(index, el) {
                if(!$(el).find(".dn-row-ckx").length>0){
                    $(el).children(".dn-ckx-icon").css({"backgroundPositionX":58});
                }
            });            
        }
        obj.li.find(":checkbox:disabled").prev(".ui-ckx").addClass("disabled");
        obj.li.on('click', function(event) {
            if(event.target.tagName === 'LABEL') return ;
            if(event.target.checked){
                $(event.currentTarget).children("label").find(obj.ckx).prop("checked",true).prev(".ui-ckx").addClass('active');
            }
            else if(event.target.checked==false){      
                //这个判断用于防止兄弟被选中的情况下还冒泡上级取消被选
                if($(event.currentTarget).children(".dn-row-ckx").find(":checked").length<=0){
                    $(event.currentTarget).children("label").find(obj.ckx).prop("checked",false).prev(".ui-ckx").removeClass('active');
                }
            }
        });
        $this.find(".dn-ckx-icon").on('click', function(event) {
            event.stopPropagation();
            var ul = $(this).siblings('.dn-row-ckx');
            if(ul.length > 0){
                ul.slideToggle();
                $(this).toggleClass('actived');
            };
        });
        obj.ckx.on('click', function(event) {
            // console.log(event.target.checked);
            if(event.target.checked){
                $(event.target).closest(obj.li).find(obj.ckx).prop("checked",true).prev(".ui-ckx").addClass('active'); 
            }
            else if(event.target.checked==false){
                $(event.target).closest(obj.li).find(obj.ckx).prop("checked",false).prev(".ui-ckx").removeClass('active'); 
            }
        });
        obj.li.children('label').hover(function() {
            $(this).children('.ui-ckx').addClass('hover');
        }, function() {
            $(this).children('.ui-ckx').removeClass('hover');
        });
    });
}())